const path = require('path');
const log4js = require('koa-log4');

log4js.configure({
    // 配置文件的输出源，一般日志输出type共有console、file、dateFile三种
    appenders: { 
        default: { // 访问级别日志，记录用户的所有请求
            type: 'dateFile', // 日志类型
            filename: path.resolve(__dirname, '../logs/info'), // 日志输出位置，当目录文件或文件夹不存在时自动创建
            pattern: '-yyyy-MM-dd.log',  // 日志输出格式
            alwaysIncludePattern: true   // 是否总是有后缀名
        },
        loger: { // 应用级别日志，记录错误处理
            type: 'dateFile',
            filename: path.resolve(__dirname, '../logs/error'),
            pattern: '-yyyy-MM-dd.log',   
            alwaysIncludePattern: true  
        },
        out: {
            type: 'console'
        },
    },
    // 供外部调用的名称和对应设置定义
    categories: {
        default: { appenders: [ 'default' ], level: 'info' },
        loger: { appenders: [ 'loger' ], level: 'all'},
        out: { appenders: [ 'out' ], level: 'all' },
    },
    replaceConsole: true,
});

exports.logall = (msg) => {
    if (process.env.NODE_ENV === 'production') {
        return log4js.koaLogger(log4js.getLogger('default'))
    } else {
        return log4js.koaLogger(log4js.getLogger('out'))
    }
}

exports.logctx = (msg) => {
    if (process.env.NODE_ENV === 'production') {
        return log4js.getLogger('default').info(msg)
    } else {
        return log4js.getLogger('out').info(msg)
    }
}

exports.loger = process.env.NODE_ENV === 'production' ? log4js.getLogger('loger') : log4js.getLogger('out');


